package modelo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;

import org.joda.time.DateTime;

import pago.FormaPago;

public class Factura implements Serializable {
	
	private static final long serialVersionUID = 1L;
	private Auto auto;
	private Set<Reparacion> reparaciones = new HashSet<Reparacion>();
	private DateTime fecha;
	private FormaPago formaDePago;
	private BigDecimal pago;
	private int id;
	
	public Factura(Auto auto, DateTime fecha, FormaPago formaDePago, BigDecimal pago) {
		this.auto = auto;
		this.fecha = fecha;
		this.pago = pago;
		this.formaDePago = formaDePago;
	}
	
	public Factura() {

	}
	
	/*
	 * ---------------------------------------------Methods-------------------------------------------------------
	 */
	public void addReparacion(Reparacion rep){
		this.reparaciones.add(rep);
	}
	
	public void removeReparacion(Reparacion rep){
		this.reparaciones.remove(rep);
	}
	
	public BigDecimal precioTotal(){
		BigDecimal total = BigDecimal.valueOf(0L);
		for(Reparacion r : this.getReparaciones()){
			total.add(r.getCosto());
		}
		return total;
	}
	
	/*
	 * ---------------------------------------------Gett&Sett-------------------------------------------------------
	 */
	public Set<Reparacion> getReparaciones() {
		return reparaciones;
	}
	public void setReparaciones(Set<Reparacion> reparaciones) {
		this.reparaciones = reparaciones;
	}
	public Auto getAuto() {
		return auto;
	}
	public void setAuto(Auto auto) {
		this.auto = auto;
	}
	public DateTime getFecha() {
		return fecha;
	}
	public void setFecha(DateTime fecha) {
		this.fecha = fecha;
	}
	public FormaPago getFormaDePago() {
		return formaDePago;
	}
	public void setFormaDePago(FormaPago formaDePago) {
		this.formaDePago = formaDePago;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public BigDecimal getPago() {
		return pago;
	}
	public void setPago(BigDecimal pago) {
		this.pago = pago;
	}
}
